Draft:JBASE
jBASE is a NoSQL Database Management System comprising development tools, middleware and a multidimensional database database. jBASE's native architecture, there is no restrictive legacy Virtual Machine layered on top of the multivalue application. The file I/O runs through a layer called jEDI (jBASE External Database Interface), allows you to write BASIC code using conventional OPEN/READ/WRITE commands that access and manipulate information in virtually any data store, including relational databases and RESTful services. History jBASE was released in 1991 by a small company of the same name located in Hemel Hempstead. Written by former Microdata engineers, jBASE emulates all implementations of the system to some degree. jBASE is unique in that it compiles applications to native machine code form, rather than to an intermediate byte code. In 2015, cloud solutions provider Zumasys in Irvine, California, acquired the jBASE distribution rights as well as the intellectual property from Temenos Group. Main features Multivalue databases are similar to relation databases because they have schemas and organize data in tables. But multivalue database schemas are less rigid than conventional relational database schemas. Unlike relational databases, multivalue databases can assign more than one value to a single attribute. A cell (attribute) in a multivalue database may contain an array of values. In other words, while a relational database stores just one fact within a table cell, multivalue databases can store multiple values within that cell. ;File Storage jBASE files are Document-oriented_database style NoSQL database. All jbase files are document oriented and have a primary unique key and then a text document. jBASE has numerous built in hash based files (j3, j4, jp, jr, and distributed) and can also use external storage systems via the jEDI interface to store data in SQL or even O/S directories. ;shell jBASE has a built in shell called jsh. This shell is used to emulate the legacy Pick shell when pick was a operating system. In jBASE the shell is not required as all programs are compiled to Native C programs and can be executed directly from the Operating System Shell. The jShell exists to emulate specific Pick specific shell functions such as LISTS or TCL stacks. ;Basic Language jBC is a programming language that is used in jBASE post-relational (multi-value) DBMS. Syntax is Basic-like; compilation process firstly converts the source code to C which in turn is compiled for the target platform with the usage of standard C compiler. ;Queries jBASE has a built in jQL language that is similiar to SQL that allows you to query and output data. Unlike SQL there is no update capability. ;Indexing Fields in jBASE can be indexed iwth a primary index. jBASE also allows computed indexes, compound indexes. ;Replication jBASE offers Transaction Journaling to replicate data to a secondary jBASE Node ;Transactions jBASE offers transactions boundaries to enforce database integrity. ;Schema jBASE and other Pick implementations utilize a 3 dimensional nested array structure to store data. Schema data is stored within a Schema dictionary for the file, schema information is not stored within the data. jBASE also has no data type enforcement. jBASE utilizes the array positions to describe data that would usually be stored in a separate table in SQL. Example { "orderID" : 10253, "customerID" : "HANAR", "employeeID" : 3, "orderDate" : "1996-07-10 00:00:00.000", "requiredDate" : "1996-07-24 00:00:00.000", "shippedDate" : "1996-07-16 00:00:00.000", "shipVia" : 2, "freight" : 58.17, "shipName" : "Hanari Carnes", "shipAddress" : { "street" : "Rua do Paço 67", "city" : "Rio de Janeiro", "region" : "RJ", "postalCode" : "05454-876", "country" : "Brazil" }, "details" : [ { "productID" : 31, "unitPrice" : 10, "quantity" : 20, "discount" : 0 }, { "productID" : 39, "unitPrice" : 14.4, "quantity" : 42, "discount" : 0 }, { "productID" : 49, "unitPrice" : 16, "quantity" : 40, "discount" : 0 } ] } The same data in jBASE would look like ID: 10234 001 HANAR 002 3 003 10419 004 10433 005 10425 006 Rua do Pa..o 67]Rio de Janeiro]RJ]05454-876]Brazil 007 008 009 010 31]39]49 011 1000]1440]1600 012 20]42]40 013 0]0]0 Sample Pick code to access data OPEN "ORDERS" TO FI.ORDERS ELSE STOP READ ORDER FROM ORDERS, "10253" ELSE STOP PRINT "Customer :":ORDERS<1> PRINT "Employee :":ORDERS<2> PRINT "Order Date :":OCONV(ORDERS<3>,"D4-") PRINT "Items Id","Per Unit","Qnty" NUMBERITEMS=DCOUNT(ORDERS<10>,@VM) FOR I=1 TO NUMBERITEMS PRINT ORDERS<10,I>,OCONV(ORDERS<11,I>,"MD2,$"),ORDERS<3>) NEXT I References External Links * jBASE Page * jBASE Knowledgebase * google group * db Engines ranking * IBS Intelligence * Texas Multivalue Users Group * International Spectrum * International Spectrum Recent News * Database Trends & Applications * Database Trends & Applications - Best MultiValue Database 2015 I have updated the article to include references from relevant sites, like Temenos.com and Forbes.com.